// #include <stdio.h>
// #include <stdlib.h>
// #include <Windows.h>
// #include <stdbool.h>
//
// #define MAXSIZE 10
// typedef int ElemType;
// typedef struct QueueSq {
//     ElemType data[MAXSIZE];
//     int front;
//     int rear;
//     int flag;
// }QueueSq;
//
// //初始化
// void InitCQueue(QueueSq* Q) {
//     Q->flag=0;//初始化队列为空，标记0
//     Q->front=Q->rear=0;
// }
//
// //判断队列空
// bool isNull(QueueSq* Q) {
//     return Q->front==Q->rear&&Q->flag==0;
// }
//
// //判断队列为满
// bool isFull(QueueSq* Q) {
//     return Q->flag==1;
// }
//
// //入队
// void PushQ(QueueSq* Q,ElemType value) {
//     if(isFull(Q)) {
//         printf("队列已满,无法入队\n");
//         return;
//     }
//     Q->data[Q->rear]=value;
//     Q->rear=(Q->rear+1)%MAXSIZE;
//
//     if(isFull(Q)) {
//         Q->flag=1;
//     }
// }
//
// //出队
// void PopQ(QueueSq* Q,ElemType* value) {
//     if(isNull(Q)) {
//         printf("队列为空,不可出队\n");
//         return;
//     }
//     *value=Q->data[Q->front];
//     Q->front=(Q->front+1)%MAXSIZE;
//
//     if(isNull(Q)) {
//         Q->flag=0;
//     }
// }
//
// //打印队列元素
// void PrintQ(QueueSq* Q) {
//     if (isNull(Q)) {
//         printf("队列为空\n");
//         return;
//     }
//
//     printf("队列元素: ");
//     int i = Q->front;
//
//     do {
//         printf("%d ", Q->data[i]);
//         i = (i + 1) % MAXSIZE;
//     } while (i != Q->rear);
//
//     printf("\n");
// }
//
// int main() {
//     SetConsoleOutputCP(CP_UTF8);
//     QueueSq Q;
//     InitCQueue(&Q);
//     PushQ(&Q,1);
//     PushQ(&Q,2);
//     PushQ(&Q,3);
//     PushQ(&Q,4);
//     PushQ(&Q,5);
//     PrintQ(&Q);
//
//     int resultPop;
//     PopQ(&Q,&resultPop);
//     printf("出队元素为:%d",resultPop);
//
//     return 0;
// }